Goal-Directed Backwards Static Analysis for JavaScript
نویسنده
چکیده
JavaScript is notoriously difficult to analyze due to its rampant use of standard dynamic features (e.g. duck typing, dynamic dispatch, first-class functions, and run-time string evaluation), as well as its idiosyncratic approach to scoping (scope object chains) and inheritance (prototyping). Therefore, despite its near-universal adoption as a client-side scripting language and its increasing use in server-side and mobile applications, JavaScript is rarely analyzed in practice and can be quite buggy, unreliable, and unsafe. We present a novel technique to improve precision and efficiency of JavaScript analysis by combining a standard forwards abstract interpretation with a goal-directed backwards symbolic execution. The backwards analysis can operate either as a standalone tool to refute false alarms that arise from over-approximation in the forwards analysis, or on-line, refuting spurious data-flow on demand at critical points during the forwards analysis. General Terms Languages, Algorithms, Verification
منابع مشابه
A Practical Blended Analysis for Dynamic Features in JavaScript
JavaScript is widely used in Web applications; however, its dynamism renders static analysis ineffective. Our JavaScript Blended Analysis Framework is designed to handle JavaScript dynamic features. It performs a flexible combined static/dynamic analysis. The blended analysis focuses static analysis on a dynamic calling structure collected at runtime in a lightweight manner, and refines the sta...
متن کاملScalable and Precise Static Analysis of JavaScript Applications via Loop-Sensitivity (Artifact)
This artifact is an implementation of the loopsensitive analysis (LSA) technique that can improve analysis precision and scalability in analyzing JavaScript applications by distinguishing loop iterations automatically during analysis. It has been built on SAFE, the open-source JavaScript static analyzer framework, and its package contains all benchmarks that we used in the companion ECOOP paper...
متن کاملScalable and Precise Static Analysis of JavaScript Applications via Loop-Sensitivity
The numbers and sizes of JavaScript applications are ever growing but static analysis techniques for analyzing large-scale JavaScript applications are not yet ready in a scalable and precise manner. Even when building complex software like compilers and operating systems in JavaScript, developers do not get much benefits from existing static analyzers, which suffer from mutually intermingled pr...
متن کاملGULFSTREAM: Staged Static Analysis for Streaming JavaScript Applications
The advent of Web 2.0 has led to the proliferation of client-side code that is typically written in JavaScript. Recently, there has been an upsurge of interest in static analysis of client-side JavaScript for applications such as bug finding and optimization. However, most approaches in static analysis literature assume that the entire program is available to analysis. This, however, is in dire...
متن کاملIEEE754 Floating Point Bound Intervals for static analysis of JavaScript Programs
This paper extends our previous work on static analysis of JavaScript applications using an extended domain of intervals. The prior work uses integers as bounds of intervals, which leads to loss of precision. In this work, we use floating point numbers as bounds and design correct abstract operations on intervals that safely approximate concrete operations. We have also designed abstract functi...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2016